#pragma once

#include <vector>

class BinaryMinHeap
{
public:
	BinaryMinHeap();
	BinaryMinHeap(unsigned int initial_size);
	~BinaryMinHeap();

public:
	unsigned int size();
	void push(double key, void* object);
	void pop(double& key, void*& object);

private:
	std::vector<double>* keyArray;
	std::vector<void*>* objectArray;

private:
	unsigned int get_parent_index(int index);
	unsigned int get_child_index(int index, bool isRightChild);
};

